//
//  "$Id: TTSSpeech.h  2016-01-25 $"
//
//	Description:	语音合成器接口
//	Revisions:		Year-Month-Day  SVN-Author  Modification
//

#ifndef __TTSSPEECH_API_H__
#define __TTSSPEECH_API_H__

#include "Types.h"
#include "Defs.h"

#ifdef __cplusplus
extern "C" {
#endif

///TTS语音文本编码
typedef enum
{ 
	TTSGB2312,					///< GB2312编码
	TTSGBK,						///< GBK编码
	TTSBIG5,					///< BIG5编码
	TTSUNICODE,					///< UNICODE编码
}TTSTextType;

///TTS参数结构体,128字节
typedef struct
{
	char		*pText;					///< 语音合成文本
	uint		len;					///< 文本长度
	int			ifBlock;				///< 是否阻塞方式
	TTSTextType	type;				///< 文本类型
	int 		reserved[28];		///< 保留
}TtsSpeechParam;

///TTS编码格式结构体，128字节
typedef struct
{
	int			volume;			///< TTS音量,范围0~100.
	int			reserved[31];	///< 保留
}TtsSpeechFormat;

/// TTS语音合成接口，512字节
typedef struct TtsSpeech
{
	/// 底层似有数据
	void *priv;
	
	/// 增加接口引用
	///
	/// \param [in] thiz TTS语音合成器接口指针
	/// \retval 0 成功
	/// \retval <0失败
	int (*addRef)(struct TtsSpeech *thiz);
	
	/// 释放接口
	///
	/// \param [in] thiz TTS语音合成器接口指针
	/// \retval 0 成功
	/// \retval <0失败
	
	int (*release)(struct TtsSpeech *thiz);
	
	/// 发送TTS语音合成参数
	///
	/// \param [in] thiz TTS语音合成器接口指针
	/// \param [in] pSpeechParam TTS语音合成参数 
	/// \retval = 0 成功
	/// \retval < 0 失败
	int (*sendTtsSpeech)(struct TtsSpeech *thiz,TtsSpeechParam *pSpeechParam);
	
	/// TTS语音功能控制
	///
	/// \param [in] thiz TTS语音合成器接口指针
	/// \param [in] state 状态操作 0-关闭 1-打开
	/// \retval = 0 成功
	/// \retval < 0 失败
	int (*setTtsSpeechMode)(struct TtsSpeech *thiz,int state);

	/// 设置TTS语音编码格式
	/// \param [in] thiz TTS语音合成器接口指针
	/// \param [in] format 指向TTS语音编码格式结构TtsSpeechFormat的指针。
	///	\retval 0 设置成功
	///	\retval <0 设置失败
	int (*setFormat)(struct TtsSpeech *thiz, TtsSpeechFormat *format);

	/// 保留字节
	int reserved[122];
}TtsSpeech;

/// TTS语音合成接口描述结构，128字节
typedef struct TtsSpeechDesc
{
	int				reserved[32];	///< 保留字节
}TtsSpeechDesc;

/// 创建TTS语音合成接口
///
/// \param [in] desc，TTS语音合成接口描述指针
/// \param [out] speech，TTS语音合成接口指针的指针
/// \retval 0 成功
/// \retval <0 失败
int PAL_API createTtsSpeech(TtsSpeechDesc *desc, TtsSpeech **speech);

/// 获取语音合成器个数
///
int PAL_API getTtsSpeechCount(void);

/// @} end of group
#ifdef __cplusplus
}
#endif

#endif //__TTSSPEECH_API_H__

